package com.power.sifa.statistics.service;

import com.plf.common.domain.PageDataResponse;
import com.plf.common.exception.BusinessException;
import com.power.sifa.correction.model.Cre_record_ga;
import com.power.sifa.correction.model.pojo.vo.PhotoVO;
import com.power.sifa.statistics.model.pageInfo.CameraPageInfo;
import com.power.sifa.statistics.model.pageInfo.CorrectCountPageInfo;
import com.power.sifa.statistics.model.pageInfo.MarkPointPageInfo;
import com.power.sifa.statistics.model.vo.*;

import java.util.List;

public interface CorrectionCountService {

    /**
     * 查询标记点列表
     */
    List<MarkPointVO> markPointList(MarkPointPageInfo pageInfo);

    /**
     * 查询标记点详情
     */
    MarkPointDetailsVO markPointDetails(String warningId);

    /**
     * 获取所有预警图片
     *
     * @return
     */
    List<PhotoVO> getWarningPhotoMap(Integer gaId, Integer timeScope);

    /**
     * 统计社矫人员信息
     * @return
     */
    List<BaseCountVO> countCorrectPersonInfo(List<String> deptIds);


    /**
     * 统计社矫重点人员罪名
     * @return
     */
    BaseGraphVO countCorrectCrime(List<String> deptIds);


    /**
     * 统计社矫人员所在地区
     * @return
     */
    BaseGraphVO countCorrectPersonLocation(List<String> f_deptid);


    /**
     * 按时间查询的告警统计
     * @param pageInfo
     * @return
     */
    List<BaseCountVO> countWarningByTime(CorrectCountPageInfo pageInfo);

    /**
     * 通过条件查询对应的详情数据
     * @param pageInfo
     * @return
     */
    PageDataResponse countWarningInfoByCondition(CorrectCountPageInfo pageInfo) throws BusinessException;


    /**
     * 查询标记点列表
     */
    List<MarkPointVO> getPersonMarkPoint(MarkPointPageInfo pageInfo);


    /**
     * 通过公安数据查询当前人员的前后范围的坐标点
     * @param gaId 公安id
     * @param timeScope 时间范围
     * @return
     */
    List<MarkPointVO> getPersonMoveTrack(Integer gaId, Integer timeScope);

    /**
     * 通过公安数据查询当前人员的前后范围的坐标点
     * @param gaId 公安id
     * @param timeScope 时间范围
     * @return
     */
    List<Cre_record_ga> getCreRecordGaList(Integer gaId, Integer timeScope);


    /**
     * 查询摄像头坐标点列表
     */
    List<MarkPointVO> getCameraMarkPoint();

    /**
     * 查询摄像头详情
     * @param cameraPageInfo
     */
    CameraInfoVO getCameraInfoDetail(CameraPageInfo cameraPageInfo);

    /**
     * 获取获取监控情况
     * @param pageInfo
     * @return
     */
    PageDataResponse getMonitorCondition(CorrectCountPageInfo pageInfo);

    PageDataResponse getMonitoringList(CorrectCountPageInfo pageInfo) throws Exception;
}
